Creé una función que muestra al finalizar la compra los ahorros totales en función de los descuentos de productos, pero me gustaría que mostrara el porcentaje ahorrado sobre el total del pedido y, si es posible, mostrarlo dentro de un cuadro.
Código:
function wc_discount_total() { global $woocommerce; $discount_total = 0; foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) { $_product = $values['data']; if ( $_product->is_on_sale() ) { $regular_price = $_product->get_regular_price(); $sale_price = $_product->get_sale_price(); $discount = ($regular_price - $sale_price) * $values['quantity']; $discount_total += $discount; } } if ( $discount_total > 0 ) { echo '<tr class="cart-discount"> <th>'. __( 'Your Savings', 'woocommerce' ) .'</th> <td data-title=" '. __( 'You Saved', 'woocommerce' ) .' ">' . wc_price( $discount_total + $woocommerce->cart->discount_cart ) .'</td> </tr>'; } } add_action( 'woocommerce_cart_totals_after_order_total', 'wc_discount_total', 99); add_action( 'woocommerce_review_order_after_order_total', 'wc_discount_total', 99);Cómo se ve mi pago actual:
Ampliado:
Como me gustaria que se viera:
Si hay un descuento en ese pedido, puede agregar otra etiqueta de fila de tabla y calcular el porcentaje. Así que sería algo como esto:
add_action('woocommerce_cart_totals_after_order_total', 'wc_discount_total', 99); add_action('woocommerce_review_order_after_order_total', 'wc_discount_total', 99); function wc_discount_total() { global $woocommerce; $discount_total = 0; foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { $_product = $values['data']; if ($_product->is_on_sale()) { $regular_price = $_product->get_regular_price(); $sale_price = $_product->get_sale_price(); $discount = ($regular_price - $sale_price) * $values['quantity']; $discount_total += $discount; } } if ($discount_total > 0) { echo '<tr class="cart-discount"> <th>' . __('Your Savings', 'woocommerce') . '</th> <td data-title=" ' . __('You Saved', 'woocommerce') . ' ">' . wc_price($discount_total + $woocommerce->cart->discount_cart) . '</td> </tr>'; $total = WC()->cart->cart_contents_total; $total_saved = wc_price($discount_total + $woocommerce->cart->discount_cart); $percentage_saved = round(($total_saved * 100) / $total); echo '<tr class="cart-percentage-discount"> <th>' . __('Percentage Saved', 'woocommerce') . '</th> <td data-title=" ' . __('You Saved', 'woocommerce') . ' ">' . esc_html($percentage_saved . "%") . '</td> </tr>'; } }